* @param {mw.rcfilters.dm.FiltersViewModel} filtersModel Filters view model
* @param {mw.rcfilters.dm.ChangesListViewModel} changesListModel Changes list view model
* @param {mw.rcfilters.dm.SavedQueriesModel} savedQueriesModel Saved queries model
+ * @param {Object} config Additional configuration
+ * @cfg {string} savedQueriesPreferenceName Where to save the saved queries
*/
- mw.rcfilters.Controller = function MwRcfiltersController( filtersModel, changesListModel, savedQueriesModel ) {
+ mw.rcfilters.Controller = function MwRcfiltersController( filtersModel, changesListModel, savedQueriesModel, config ) {
this.filtersModel = filtersModel;
this.changesListModel = changesListModel;
this.savedQueriesModel = savedQueriesModel;
+ this.savedQueriesPreferenceName = config.savedQueriesPreferenceName;
+
this.requestCounter = {};
this.baseFilterState = {};
this.uriProcessor = null;
);
try {
- parsedSavedQueries = JSON.parse( mw.user.options.get( 'rcfilters-saved-queries' ) || '{}' );
+ parsedSavedQueries = JSON.parse( mw.user.options.get( this.savedQueriesPreferenceName ) || '{}' );
} catch ( err ) {
parsedSavedQueries = {};
}
// so it gets processed
this.changesListModel.update(
$changesList.length ? $changesList : 'NO_RESULTS',
- $( 'fieldset.rcoptions' ).first(),
+ $( 'fieldset.cloptions' ).first(),
true // We're using existing DOM elements
);
}
}
// Save the preference
- new mw.Api().saveOption( 'rcfilters-saved-queries', stringified );
+ new mw.Api().saveOption( this.savedQueriesPreferenceName, stringified );
// Update the preference for this session
- mw.user.options.set( 'rcfilters-saved-queries', stringified );
+ mw.user.options.set( this.savedQueriesPreferenceName, stringified );
};
/**
return $.ajax( uri.toString(), { contentType: 'html' } )
.then(
- // Success
function ( html ) {
- var $parsed;
+ var $parsed,
+ pieces;
+
if ( !latestRequest() ) {
return $.Deferred().reject();
}
$parsed = $( $.parseHTML( html ) );
- return {
+ pieces = {
// Changes list
changes: $parsed.find( '.mw-changeslist' ).first().contents(),
// Fieldset
- fieldset: $parsed.find( 'fieldset.rcoptions' ).first()
+ fieldset: $parsed.find( 'fieldset.cloptions' ).first()
};
+
+ // Watchlist returns 200 when there is no results
+ if ( pieces.changes.length === 0 ) {
+ pieces.changes = 'NO_RESULTS';
+ }
+
+ return pieces;
},
- // Failure
+ // RC returns 404 when there is no results
function ( responseObj ) {
var $parsed;
// Force a resolve state to this promise
return $.Deferred().resolve( {
changes: 'NO_RESULTS',
- fieldset: $parsed.find( 'fieldset.rcoptions' ).first()
+ fieldset: $parsed.find( 'fieldset.cloptions' ).first()
} ).promise();
}
);